home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / msysjour / vol06 / 02 / wintro5 / stock.h < prev    next >
C/C++ Source or Header  |  1991-02-28  |  6KB  |  205 lines

  1. /*===========================================================================*/
  2. /*                                                                           */
  3. /* File    : STOCK.H                                                         */
  4. /*                                                                           */
  5. /* Purpose :                                                                 */
  6. /*                                                                           */
  7. /* History :                                                                 */
  8. /*                                                                           */
  9. /* (C) Copyright 1990 Marc Adler/Magma Systems     All Rights Reserved       */
  10. /*===========================================================================*/
  11.  
  12.  
  13. extern HANDLE hThisInstance;  /* Program instance handle */
  14. extern HWND hWndMain;         /* Handle to main window   */
  15. extern HWND hwndMDIClient;    /* Handle to MDI client    */
  16. extern HWND hWndActive;
  17. extern HWND hWndStatus;
  18.   #define Y_STATUSWINDOW   20   /* The height of the status window */
  19. extern HANDLE hCurrStockInfo;
  20.  
  21. #define CBWNDEXTRA          sizeof(HANDLE)
  22.  
  23.  
  24. /*
  25.   Stock information
  26. */
  27.  
  28. #define MAXSTOCKNAME     5
  29. #define MAXDESCRIPTION   32
  30.  
  31. typedef struct tagDate
  32. {
  33.   BYTE   chMonth;
  34.   BYTE   chDay;
  35.   BYTE   chYear;
  36. } DATE;
  37.  
  38. typedef  DWORD  PRICE;      /* dollar amt * iDenominator + fractional amount */
  39. typedef  DWORD  VOLUME;
  40.  
  41. typedef struct tagTick
  42. {
  43.   PRICE  price;
  44.   VOLUME dwVolume;
  45.   DATE   date;
  46. } TICK, FAR *LPTICK;
  47.  
  48. /*
  49.   Data structure describing how we draw the graph
  50. */
  51. typedef struct tagGraphInfo
  52. {
  53.   PRICE dwMinPrice;
  54.   PRICE dwMaxPrice;
  55.   DWORD dwScaleFactor;
  56.   DWORD dwTickInterval;
  57.   WORD  iDenominator;    /* the fractional amount used for this stock */
  58.   WORD  iGridPen;
  59. } GRAPHINFO, FAR *LPGRAPHINFO;
  60.  
  61.  
  62. typedef struct tagStockFile
  63. {
  64.   DWORD  dwMagic;
  65. #define MAGIC_COOKIE             66666666L
  66.   char   szStock[MAXSTOCKNAME];
  67.   char   szDescription[MAXDESCRIPTION];
  68.   GRAPHINFO graphinfo;
  69.   WORD   nTicks;
  70. /*
  71.   TICK   aTicks[1];
  72. */
  73. } STOCKFILE;
  74.  
  75.  
  76. typedef struct tagGraphAttributes
  77. {
  78.   WORD     iMappingMode;
  79.   COLORREF clrPen,
  80.            clrBackground;
  81.   WORD     idxPen,
  82.            idxBackground;
  83. } GRAPHATTRIBUTES;
  84.  
  85.  
  86.  
  87. typedef struct tagInCoreStockInfo
  88. {
  89.   char      szFileName[14];  /* file name where the stock data is kept  */
  90.   STOCKFILE StockFile;       /* a copy of the stock file header         */
  91.   HANDLE    hTicks;
  92.   WORD      nTicksAllocated; /* how large the ticker array is           */
  93.   HWND      hWnd;            /* window which the stock is shown in      */
  94.   DWORD     dwFlags;         /* any kind of status bits we need to keep */
  95. #define STATE_HAS_VGRID  1L
  96. #define STATE_HAS_HGRID  2L
  97. #define STATE_DIRTY      4L
  98.   GRAPHATTRIBUTES graphAttrs;
  99. } STOCKINFO, FAR *LPSTOCKINFO;
  100.  
  101.  
  102.  
  103. #define ID_ABOUT            99
  104. #define ID_STOCK            100
  105. #define ID_GRAPH            101
  106.  
  107. #define ID_NEW              101
  108. #define ID_OPEN             102
  109. #define ID_SAVE             103
  110. #define ID_CLOSE            104
  111. #define ID_PRINT            105
  112. #define ID_EXIT             106
  113. #define ID_MAP              107
  114.  
  115. #define ID_TICK_ADD         200
  116. #define ID_TICK_CHANGE      201
  117. #define ID_GRAPH_PRICE      202
  118. #define ID_GRAPH_VOLUME     203
  119. #define ID_GRAPH_ZOOM       204
  120. #define ID_GRAPH_COLORS     205
  121. #define ID_GRAPH_OPTIONS    199
  122. #define ID_GRAPH_GRID_HORZ  206
  123. #define ID_GRAPH_GRID_VERT  207
  124. #define ID_GRAPH_ISOTROPIC  230
  125. #define ID_GRAPH_ANISOTROPIC  231
  126.  
  127. #define ID_WINDOW_TILE      208
  128. #define ID_WINDOW_CASCADE   209
  129. #define ID_WINDOW_ICONS     210
  130. #define ID_WINDOW_CLOSEALL  211
  131. #define ID_WINDOW_CHILDREN  220
  132.  
  133. #define ID_TICK_DATE        100
  134. #define ID_TICK_PRICE       101
  135. #define ID_TICK_VOLUME      102
  136.  
  137.  
  138. #define ID_RECTTEXT   120
  139. #define ID_VXEXT      109
  140. #define ID_VXORG      107
  141. #define ID_VYEXT      111
  142. #define ID_VYORG      113
  143. #define ID_WXEXT      103
  144. #define ID_WXORG      101
  145. #define ID_WYEXT      105
  146. #define ID_WYORG      115
  147.  
  148. #define IDC_FILENAME  400
  149. #define IDC_EDIT      401
  150. #define IDC_FILES     402
  151. #define IDC_PATH      403
  152. #define IDC_LISTBOX   404
  153.  
  154.  
  155. /*
  156.   Stuff for graph dialog box
  157. */
  158. #define ID_SYMBOL     300
  159. #define ID_MINPRICE   301
  160. #define ID_MAXPRICE   302
  161. #define ID_FACTOR     303
  162. #define ID_TICKINT    304
  163. #define ID_HORZGRID   305
  164. #define ID_VERTGRID   306
  165. #define ID_GRIDSTYLE  307
  166. #define ID_HELP       308
  167. #define ID_DENOMINATOR 309
  168.  
  169. /*
  170.   Colors dialog
  171. */
  172. #define ID_PENCOLOR   320
  173. #define ID_BACKCOLOR  350
  174.  
  175.  
  176. int NEAR PASCAL WinMain(HANDLE, HANDLE, LPSTR, int);
  177. BOOL FAR PASCAL InitializeApplication(VOID);
  178. BOOL FAR PASCAL InitializeInstance(LPSTR lpCmdLine, WORD nCmdShow);
  179. LONG FAR PASCAL MainWndProc(HWND, WORD, WORD, LONG);
  180. LONG FAR PASCAL StatusWndProc(HWND, WORD, WORD, LONG);
  181. LONG FAR PASCAL GraphWndProc(HWND, WORD, WORD, LONG);
  182. BOOL FAR PASCAL AboutDlgProc(HWND, WORD, WORD, LONG);
  183. BOOL FAR PASCAL MapDlgProc(HWND, WORD, WORD, LONG);
  184. BOOL FAR PASCAL AddTickDlgProc(HWND, WORD, WORD, LONG);
  185. BOOL FAR PASCAL GraphOptionsDlgProc(HWND, WORD, WORD, LONG);
  186. HANDLE   PASCAL StockInfoAlloc(void);
  187. int PASCAL StockFileSave(HANDLE hStockInfo);
  188. VOID MainPaint(HWND, HDC);
  189. int PASCAL StockFileRead(LPSTR szFileName);
  190. HWND PASCAL GraphCreateWindow(LPSTR lpName);
  191. int PASCAL GraphWndPaint(HWND hWnd, HDC hDC, LPSTOCKINFO lpStockInfo);
  192. BOOL FAR PASCAL GraphColorsDlgProc(HWND, WORD, WORD, LONG);
  193. VOID PASCAL CreateMDIClient(HWND hwndParent);
  194.  
  195. /* FILEOPEN.C */
  196. HANDLE FAR PASCAL OpenDlg(HWND, unsigned, WORD, LONG);
  197. void SeparateFile(HWND, LPSTR, LPSTR, LPSTR);
  198. void UpdateListBox(HWND);
  199. void AddExt(PSTR, PSTR);
  200. void ChangeDefExt(PSTR, PSTR);
  201.  
  202. LONG GetDlgItemLong(HWND hDlg, WORD id, BOOL FAR *lpTranslated, BOOL bSigned);
  203. VOID PASCAL ClipWindowToStatusLine(HWND hWnd);
  204.  
  205.